<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
$file_path='IP.txt';$build='ip.dat';
require('../../lib/base.php');
$base=new base(array('web','crontab'));
$sort=$base->model('sort');
$data['china']=$sort->SortTree(array('where'=>array('label ='=>'china')));
//第一步讲文件转化为:开始IP	地址格式
$data['data']=file($file_path);
$new='';
$ip=fopen('area.txt','w');
foreach($data['data'] as $key=>$value){
	$value=preg_replace('/\s+/u','_|_',$value);
	$value=explode('_|_',$value);
	if($new!=$value[2]){//上一条记录地址不等于下一条记录地址,写入数组
		$count++;
		fwrite($ip,$value[0]."_&_".$value[2]."\r\n");
		$new=$value[2];
	}
}
fclose($ip);
//更新一批IP
$newip=array('127.0.0.1'=>'');

//第二步替换短名称
$ip=preg_replace(array('/内蒙古/u','/广西/u','/宁夏/u','/新疆/u','/西藏/u'),array('内蒙古自治区','广西壮族自治区','宁夏回族自治区','新疆维吾尔自治区','西藏自治区'),file_get_contents('area.txt'));
fwrite(fopen('area.txt','w'),$ip);
//第三步替换二级市
$china=array();
foreach($data['china'] as $value){
	foreach($value['child'] as $v){
		$china['expr'][]='/'.$value['name'].$v['name'].'\S*[^\r\n]*/u';
		$china['rep'][]=$v['id'];
	}
}
$ip=preg_replace($china['expr'],$china['rep'],file_get_contents('area.txt'));
fwrite(fopen('area.txt','w'),$ip);
//第四步替换一级
$china=array();
foreach($data['china'] as $value){
	$china['expr'][]='/'.$value['name'].'\S*[^\r\n]*/u';
	$china['rep'][]=$value['id'];
}
$ip=preg_replace($china['expr'],$china['rep'],file_get_contents('area.txt'));
fwrite(fopen('area.txt','w'),$ip);

//第五步,剔去无用字符
$china['sou']=array('法属圭亚那','其他','澳大利亚','泰国','马来西亚','韩国','越南','尼泊尔','新加坡','菲律宾','印度尼西亚','巴基斯坦','托克劳','新西兰','亚太地区',
'柬埔寨','马尔代夫','阿富汗','新喀里多尼亚','巴布亚新几内亚','斐济','蒙古','瓦利斯和富图纳','孟加拉','美国','波兰','罗马尼亚','土耳其','荷兰','乌克兰','斯洛伐克','英国',
'丹麦','德国','马其顿','西班牙','瑞士','法国','瑞典','意大利','奥地利','芬兰','爱尔兰','伊朗','亚美尼亚','斯洛文尼亚','捷克','叙利亚','列支敦士登',
'卡塔尔','比利时','巴勒斯坦','保加利亚','冰岛','阿尔巴尼亚','塞浦路斯','希腊','卢森堡','葡萄牙','匈牙利','爱沙尼亚','白俄罗斯','挪威','拉脱维亚','沙特阿拉伯','以色列',
'伊拉克','吉尔吉斯斯坦','阿联酋','摩尔多瓦','也门','哈萨克斯坦','立陶宛','克罗地亚','波斯尼亚和黑塞哥维那','塞拉利昂','乌兹别克斯坦','格鲁吉亚','阿塞拜疆','泽西岛',
'圣马力诺','科威特','约旦','阿曼','马耳他','塔吉克斯坦','巴林','黎巴嫩','南非','埃及','津巴布韦','利比里亚','肯尼亚','尼日利亚','加纳','坦桑尼亚',
'赞比亚','塞内加尔','马达加斯加','安哥拉','纳米比亚','科特迪瓦','苏丹','喀麦隆','马拉维','加蓬','贝宁','乍得','博茨瓦纳',
'利比亚','佛得角','卢旺达','刚果(布)','乌干达','莫桑比克','冈比亚','莱索托','毛里求斯','摩洛哥','阿尔及利亚','刚果(金)','布基纳法索','索马里','尼日尔','中非','斯威士兰','多哥','SS','布隆迪','赤道几内亚','塞舌尔',
'毛里塔尼亚','吉布提','留尼汪','突尼斯','关岛','纽埃','加拿大','APNIC','缅甸','文莱','凯里','IANA保留地址用于网络测试',
'斯里兰卡','波多黎各','开曼群岛','联合国','牙买加','特立尼达和多巴哥','多米尼加','百慕大','巴哈马','北美地区','巴巴多斯','特克斯和凯科斯群岛','阿根廷','美属维尔京群岛','哥伦比亚',
'安提瓜和巴布达','圣皮埃尔和密克隆','法属圣马丁','英属维尔京群岛','格林纳达','马恩岛','直布罗陀','欧洲和中东地区','法罗群岛','摩纳哥','奥兰群岛','圣基茨和尼维斯','AD',
'英格兰','格陵兰','巴拿马','土库曼斯坦','马提尼克','老挝','非洲地区','刚果共和国','北马里亚纳群岛','所罗门群岛','法属波利尼西亚','瓦努阿图','不丹','马绍尔群岛',
'CZ88.NET','密克罗尼西亚联邦','本机地址','哥斯达黎加','委内瑞拉','Microsoft','墨西哥','巴西','智利','厄瓜多尔','秘鲁','乌拉圭','尼加拉瓜','玻利维亚','危地马拉',
'萨尔瓦多','古巴','局域网','朝鲜','汤加','拉美地区','东帝汶','巴拉圭','伯利兹','洪都拉斯','英属印度洋领地','库克群岛','美属萨摩亚','几内亚比绍',
'帕劳','诺福克岛','瑙鲁','维多利亚','基里巴斯','安圭拉','圣卢西亚','圣文森特和格林纳丁斯','瓜德罗普','蒙塞拉特岛','s246.xrea.com日本','梵蒂冈','塞尔维亚和黑山','埃塞俄比亚','荷属安的列斯','CNNIC',
'纯真网络','印度','IANA保留地址6to4隧道地址','IANA保留地址','IANA','塞尔维亚','黑山','欧洲','俄罗斯','马里','几内亚','根西岛','非洲','海地','苏里南','圭亚那','阿鲁巴','波黑','厄立特里亚','圣多美和普林西比','科摩罗','多米尼克','图瓦卢','萨摩亚','日本');
$ip=str_replace($china['sou'],0,file_get_contents('area.txt'));
fwrite(fopen('area.txt','w'),$ip);
//替换指定中文
$ci=array(
	'大连'=>'辽宁省大连','青岛'=>'山东省青岛','西安'=>'陕西省西安','厦门'=>'福建省厦门','南京'=>'江苏省南京','江西财经大学'=>'江西省南昌','长江大学东校区'=>'湖北省荆州','黑龙江'=>'黑龙江省哈尔滨','北京交通大学'=>'北京市海淀','中央财经大学'=>'北京市海淀','北京邮电大学'=>'北京市海淀区','对外经济贸易大学'=>'北京市朝阳区',
'清华大学'=>'北京市海淀','清华大学紫荆公寓2号楼'=>'北京市海淀','清华大学紫荆公寓1号楼'=>'北京市海淀','清华大学紫荆公寓5号楼'=>'北京市海淀','清华大学紫荆公寓6号楼'=>'北京市海淀','清华大学紫荆公寓4号楼'=>'北京市海淀','清华大学紫荆公寓7号楼'=>'北京市海淀',
'清华大学紫荆公寓3号楼'=>'北京市海淀','清华大学紫荆公寓10号楼'=>'北京市海淀','清华大学紫荆公寓8号楼'=>'北京市海淀','清华大学紫荆公寓9号楼'=>'北京市海淀','清华大学紫荆公寓12号楼'=>'北京市海淀','清华大学紫荆公寓11号楼'=>'北京市海淀',
'清华大学紫荆公寓13号楼'=>'北京市海淀','清华大学紫荆公寓'=>'北京市海淀','华中农业大学学生宿舍'=>'湖北省武汉市','华中农业大学'=>'湖北省武汉市','吉林大学'=>'吉林省长春',
'吉林大学前卫南区'=>'吉林省长春','厦门大学漳州校区'=>'福建省厦门市','上海交通大学闵行校区'=>'上海市闵行','上海交通大学'=>'上海市','宁波大学'=>'浙江省宁波市','浙江工业大学'=>'浙江省杭州','北京宣武区广安门内大街广义街金网友网吧'=>'北京市宣武区',
'北京海淀区韦伯豪网吧A厅'=>'北京市海淀区','北京石油化工学院'=>'北京市大兴','北京工业大学'=>'北京市朝阳区','中国测绘院'=>'北京市东城','北京科技大学'=>'北京市海淀','北京航空航天大学'=>'北京市海淀','重庆信息工程专修学院'=>'重庆市','华东师范大学'=>'上海市闵行',
'合肥工业大学'=>'安徽省合肥','汉中理工学院'=>'陕西省汉中','云南大学'=>'云南省昆明','浙江广播电视大学'=>'浙江省杭州','成都信息工程学院'=>'四川省成都','兰州大学榆中校区'=>'甘肃省兰州','兰州大学'=>'甘肃省兰州','佳木斯大学'=>'黑龙江省佳木斯','长江大学'=>'湖北省荆州','湖北大学'=>'湖北省武汉市',
'西安科技大学'=>'陕西省西安','西安外事学院'=>'陕西省西安','西安思源学院'=>'陕西省西安','长沙交通学院'=>'湖南省长沙','长沙理工大学'=>'湖南省长沙','湖南商学院'=>'湖南省长沙','重庆工学院'=>'重庆市','重庆九龙坡区'=>'重庆市','湖南农业大学'=>'湖南省长沙','贵州工业大学'=>'贵州省贵阳',
'安徽农业大学'=>'安徽省合肥','安徽大学'=>'安徽省合肥','河南'=>'河南省','江苏常州'=>'江苏省常州','苏州市'=>'浙江省苏州','辽宁'=>'辽宁省','同济大学'=>'上海市杨浦','上海财经大学'=>'上海市','重庆省江津区'=>'重庆市','北京理工大学'=>'北京市海淀',
'北京大学'=>'北京市海淀','北京大学万柳学区'=>'北京市海淀','清华大学学生宿舍'=>'北京市海淀','华东理工大学'=>'上海市徐汇','北京化工大学'=>'北京市海淀','北京化工大学东区学生宿舍'=>'北京市海淀','华南理工大学'=>'广东省广州','中国农业科学院'=>'北京市海淀',
'四川大学'=>'四川省成都','东华理工大学'=>'江西省南昌','IBM中国公司'=>'北京市朝阳','湖北第二师范学院'=>'湖北武汉','北京师范大学'=>'北京市西城区','中国农业大学'=>'北京市海淀','中国农业大学西区员工绿苑'=>'北京市海淀','北京大学医学部'=>'北京市海淀',
'北京印刷学院'=>'北京市大兴','南开大学'=>'天津市南开','武汉大学'=>'湖北省武汉','西华大学'=>'四川省成都','西华大学计算中心2机房'=>'四川省成都','中山大学'=>'广东省中山','华南农业大学'=>'广东省广州','西安交通大学'=>'陕西省西安','西安交通大学东区图书馆二楼的树华电子阅览室'=>'陕西省西安',
'大连理工大学'=>'辽宁省大连','大连理工大学西山生活区'=>'辽宁省大连','哈尔滨工程大学'=>'黑龙江省哈尔滨','哈尔滨理工大学'=>'黑龙江省哈尔滨','东北林业大学'=>'黑龙江省哈尔滨','东南大学'=>'江苏省南京','南京大学鼓楼校区'=>'江苏省南京','南京大学'=>'江苏省南京',
'上海交通大学闵行校区图书馆本科生阅览室蓝牌'=>'上海市闵行','上海交通大学闵行校区图书馆本科生阅览室红牌'=>'上海市闵行','上海大学'=>'上海市闸北','上海交通大学上海第二医学院'=>'上海市闵行','东华大学'=>'上海市松江','上海师范大学'=>'上海市闵行',
'上海交通大学七宝校区'=>'上海市闵行','雅虎中国'=>'北京市朝阳','雅虎中国公司'=>'北京市朝阳','郑州大学'=>'河南省郑州','郑州大学新校区临时图书馆'=>'河南省郑州','湖南师范大学'=>'湖南省长沙','吉林大学南岭校区'=>'吉林省长春','吉林大学南湖校区'=>'吉林省长春','吉林大学新民校区'=>'吉林省长春',
'吉林大学南区文苑'=>'吉林省长春','大庆职工大学'=>'黑龙江省大庆','吉林大学朝阳校区'=>'吉林省长春','吉林大学前卫北区'=>'吉林省长春','长春工业大学'=>'吉林省长春','西安石油大学'=>'陕西省西安','西安石油大学(南区)综合楼五楼机房'=>'陕西省西安',
'西安石油大学(本部)计算机中心二楼'=>'陕西省西安','西安石油大学(本部)计算机中心二楼(第五微机室)'=>'陕西省西安','重庆大学'=>'重庆市','北方工业大学'=>'北京市石景山','北方工业大学一教2机房'=>'北京市石景山','北方工业大学一教3机房'=>'北京市石景山',
'北方工业大学一教5机房'=>'北京市石景山','北方工业大学一教4机房'=>'北京市石景山','北方工业大学一教6机房'=>'北京市石景山','北京中医药大学'=>'北京市石景山','北京科技大学图书馆多功能阅览室'=>'北京市石景山','北京林业大学'=>'北京市石景山','首都经贸大学'=>'北京市丰台',
'首都经贸大学东区7楼大机房'=>'北京市丰台','首都师范大学'=>'北京市海淀','北京联合大学'=>'北京市海淀','中国农业大学东校区'=>'北京市海淀','中国教育网'=>'北京市海淀','中国CEI(中国经济信息网)骨干网'=>0,
'青海大学'=>'青海省西宁','中国国际电子商务中心'=>'北京市大兴','集美大学航海学院'=>'福建省厦门','黑龙江交通高等专科学校'=>'黑龙江省齐齐哈尔','黑龙江广播电视大学'=>'黑龙江省哈尔滨','黑龙江东方学院'=>'黑龙江省哈尔滨','黑龙江电化教育馆'=>'黑龙江省哈尔滨',
'齐齐哈尔医学院'=>'黑龙江省齐齐哈尔','北京昌平区西三旗桥北300米天地飞扬网吧'=>'北京市昌平区','北京体育大学'=>'北京市海淀','北方工业大学一教七机房'=>'北京市石景山','北方工业大学第三教学楼机房A区'=>'北京市石景山',
'北方工业大学第三教学楼机房B区'=>'北京市石景山','北方工业大学第三教学楼机房C区'=>'北京市石景山','北方工业大学第三教学楼机房D区'=>'北京市石景山','北方工业大学第三教学楼机房E区'=>'北京市石景山','北方工业大学第三教学楼机房F区'=>'北京市石景山',
'中国人民大学'=>'北京市海淀','福州大学老校区子兴楼五楼'=>'福建省福州','北京信息科技大学'=>'北京市海淀','北京信息科技大学(北机部分)'=>'北京市海淀','成都工业学院'=>'四川省成都','湖北教育局'=>'湖北省武汉','南京理工大学'=>'江苏省南京','浙江科技学院'=>'浙江省杭州',
'长春职业技术学院'=>'吉林省长春','北京朝阳区(十里堡北里)恒泰大厦2楼北极星光网吧'=>'北京市朝阳区','北京朝阳区建国门外永安里中街智明星网吧'=>'北京市朝阳区','北京朝阳区十里堡路天地赐福网吧'=>'北京市朝阳区',
'北京丰台区角门东里12号楼2层北京三维跑道上网服务中心'=>'北京市丰台','北京海淀区西三旗育新花园2号浪沙友网吧'=>'北京市海淀','北京朝阳区八里庄北里309号楼后琪彤宇龙网吧'=>'北京市朝阳区','湖南科技大学'=>'湖南省湘潭',
'首都科技大学'=>'北京市海淀','武汉通讯指挥学校'=>'湖北省武汉','浙江轻纺学院'=>'浙江省宁波','上海理工大学'=>'上海杨浦','南京工业大学'=>'江苏省南京','福建工程学院'=>'福建省福州','四川西南科技大学'=>'四川省绵阳','成都理工大学'=>'四川省成都','四川行政学院'=>'四川省成都',
'哈尔滨师范大学阿城学院图书馆2楼电子阅览室'=>'黑龙江省哈尔滨','哈尔滨师范大学'=>'黑龙江省哈尔滨','太原科技大学'=>'山西省太原','中北大学'=>'山西太原','黄河科技大学'=>'河南省郑州','青岛大学'=>'山东省青岛','山东大学'=>'山东省济南','东北大学'=>'辽宁省沈阳','江西师范大学'=>'江西省南昌',
'江西财经学院九江分院'=>'江西省南昌','重庆沙坪坝区'=>'重庆市','同济大学沪'=>'上海市杨浦','南昌大学'=>'江西省南昌','南昌工程学院'=>'江西省南昌','江西九江学院'=>'江西省九江','四川农业大学'=>'四川省雅安','成都中医药大学'=>'四川省成都','南京化工大学'=>0,'浙江大学'=>'浙江省杭州',
'厦门大学嘉庚五408室'=>0,'厦门大学嘉庚五508室'=>0,'四川大学川大花园'=>'四川省成都','中南大学岳麓山校区'=>'湖南省长沙','中南大学'=>'湖南省长沙','武汉大学信息学部'=>'湖北省武汉','华中科技大学紫菘公寓'=>0,'华中科技大学紫松公寓'=>'湖北省武汉',
'华中科技大学东'=>'湖北省武汉','聚友网络'=>'上海市长宁','北京海淀区玉泉路地铁向东商场3楼斌全网吧'=>'北京市海淀','北京朝阳区将台路芳源里小区宽带'=>'北京市朝阳区','北京朝阳区潘家园(松榆东里)华远航网吧'=>'北京市朝阳区',
'北京西站三楼北侧海陆空网吧'=>'北京市丰台','北京西站北一出口地下网吧'=>'北京市丰台','北京朝阳区(望京)广顺北大街成真世纪网吧'=>'北京市朝阳区','北京科技职业学院'=>'北京市海淀','武汉科技大学'=>'湖北省武汉','中南财经政法大学'=>'湖北省武汉',
'西安建筑科技大学'=>0,'西北工业大学'=>'陕西省西安','青岛科技大学'=>0,'河北大学'=>'河北省保定','华北科技学院'=>'北京市朝阳','大连理工大学北山B区'=>0,'东北农业大学'=>'黑龙江省哈尔滨',
'哈尔滨工业大学一校区11公寓'=>'黑龙江省哈尔滨','哈尔滨工业大学一校区12公寓'=>'黑龙江省哈尔滨','哈尔滨工业大学一校区13公寓'=>'黑龙江省哈尔滨','哈尔滨工业大学一校区5公寓'=>'黑龙江省哈尔滨','哈尔滨工业大学'=>'黑龙江省哈尔滨','哈尔滨工业大学二校区'=>'黑龙江省哈尔滨',
'哈尔滨工业大学一校区B7公寓'=>'黑龙江省哈尔滨','哈尔滨工业大学二校区B7公寓'=>'黑龙江省哈尔滨','四川大学华西校区'=>'四川省成都','四川大学竹林村'=>'四川省成都','四川大学新南村'=>'四川省成都','四川大学中心村'=>'四川省成都','暨南大学真茹A区'=>'广东省广州',
'华南农业大学华山区'=>'广东省广州','华南农业大学泰山区'=>'广东省广州','对外经济贸易大学学生公寓'=>'北京市朝阳','北方工业大学四教东区机房A区'=>'北京市石景山','北方工业大学四教东区机房B区'=>'北京市石景山','北方工业大学四教东区机房C区'=>'北京市石景山',
'北方工业大学四教东区机房D区'=>'北京市石景山','北方工业大学四教东区机房E区'=>'北京市石景山','北方工业大学四教东区机房F区'=>'北京市石景山','中科院'=>'北京市海淀','北京朝阳区大山子北里极速飞越网吧'=>'北京市朝阳区',
'北京宣武区牛街回民医院南侧易汇腾远网吧'=>'北京市宣武','北京石景山苹果园地铁站南阜石路北天罗网吧'=>'北京市石景山','北京朝阳区(芍药居)经贸大学东门太子网吧'=>'北京市朝阳区','北京宣武区陶然亭路黑窑厂东街周末之光网吧(北厅)'=>'北京市宣武',
'北京宣武区陶然亭路黑窑厂东街周末之光网吧(北厅)A'=>'北京市宣武','北京火车站内2楼西侧千龙网都网吧'=>'北京市崇文','北京朝阳区(新源里)顺源街5号文亮网吧'=>'北京市朝阳区','北京人民警察学院'=>'北京市昌平','西安联合大学'=>0,
'西安交通大学东'=>0,'青海建筑职业技术学院'=>'青海省西宁','四川师范大学'=>'四川省成都','长沙电力职业技术学院'=>'湖南省长沙','湖南长沙财经学院'=>'湖南省长沙','南昌理工学院'=>'江西省南昌','安徽建筑工业学院'=>'安徽省合肥','安徽财经大学'=>'安徽省合肥',
'四川理工学院'=>'四川省自贡','华南理工大学北区B2'=>'广东省广州','华南理工大学北区北十一'=>'广东省广州','成都信息工程学院学生公寓'=>'四川省成都','华中科技大学韵苑公寓'=>'湖北省武汉','华中科技大学韵苑公寓15栋'=>'湖北省武汉','武汉大学工学部'=>'湖北省武汉',
'武汉大学医学部'=>'湖北省武汉','北京化工大学东区学生宿舍楼'=>'北京市海淀','成都大学'=>'四川省成都','湖北'=>'湖北省','杭州'=>'浙江省杭州','上海'=>'上海市','北京'=>'北京市','暨南大学'=>'广东省广州','哈尔滨工业大学一校区'=>'黑龙江省哈尔滨','广州省广州市'=>'广东省广州','广东深圳市'=>'广东省深圳','山西太原'=>'山西省太原');
$ip=file_get_contents('area.txt');
foreach($ci as $key=>$value){
	$ip=str_replace($key,$value,$ip);
}
fwrite(fopen('area.txt','w'),$ip);
//再此替换为ID
//第三步替换二级市
$china=array();
foreach($data['china'] as $value){
	foreach($value['child'] as $v){
		$china['expr'][]='/'.$value['name'].$v['name'].'\S*[^\r\n]*/u';
		$china['rep'][]=$v['id'];
	}
}
$ip=preg_replace($china['expr'],$china['rep'],file_get_contents('area.txt'));
fwrite(fopen('area.txt','w'),$ip);
//第四步替换一级
$china=array();
foreach($data['china'] as $value){
	$china['expr'][]='/'.$value['name'].'\S*[^\r\n]*/u';
	$china['rep'][]=$value['id'];
}
$ip=preg_replace($china['expr'],$china['rep'],file_get_contents('area.txt'));
fwrite(fopen('area.txt','w'),$ip);
//剔除相同多余IP段,
$data['return']=file('area.txt');
$new='';
$ip=fopen('area.txt','w');
foreach($data['return'] as $value){
	$value=explode('_&_',$value);
	if($new!=$value[1]){
		fwrite($ip,$value[0]."_&_".$value[1]);
		$new=$value[1];
	}
}
fclose($ip);
//剔除完全识别不了的中文为0
$data['return']=file('area.txt');
$NO='';
$ip=fopen('return.txt','w');$count=0;
foreach($data['return'] as $value){
	$value=str_replace("\r\n",'',$value);
	$value=explode('_&_',$value);
	if(!is_numeric($value[1])){
		$NO[$value[1]]='';
		fwrite($ip,$value[0]."_&_0\r\n");
	}else{
		fwrite($ip,$value[0]."_&_".$value[1]."\r\n");
	}
}
fclose($ip);
//创建一个二进制压缩文件
$data['return']=file('return.txt');
$ip=fopen($build,'w');$count=0;
foreach($data['return'] as $value){
	$value=str_replace("\r\n",'',$value);
	$value=explode('_&_',$value);
	$start=ip2long($value[0]);$area=intval($value[1]);
	if($start!==false){
		$count++;
		fwrite($ip,pack('N',$start));
		fwrite($ip,pack('n',$area));
	}
}
echo $count;
fclose($ip);
//最后查看还有那些字符未处理
print_r($NO);
?>